/*
设置go代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
我们再go env 查看go语言的环境变量
*/

/*
go get 拉取新的依赖
拉取最新的版本(优先择取 tag)：go get golang.org/x/text@latest
拉取 master 分支的最新 commit：go get golang.org/x/text@master
拉取 tag 为 v0.3.2 的 commit：go get golang.org/x/text@v0.3.2
拉取 hash 为 342b231 的 commit，最终会被转换为 v0.3.2：go get golang.org/x/text@342b2e
go get -u 更新现有的依赖
go mod download 下载 go.mod 文件中指明的所有依赖
go mod tidy 整理现有的依赖
go mod graph 查看现有的依赖结构
go mod init 生成 go.mod 文件 (Go 1.13 中唯一一个可以生成 go.mod 文件的子命令)
go mod edit 编辑 go.mod 文件
go mod vendor 导出现有的所有依赖 (事实上 Go modules 正在淡化 Vendor 的概念)
go mod verify 校验一个模块是否被篡改过
go.sum 文件详细罗列了当前项目直接或间接依赖的所有模块版本，
并写明了那些模块版本的 SHA-256 哈希值以备 Go 在今后的操作中保证项目所依赖的那些模块版本不会被篡改。

go.mod 文件是启用了 Go modules 的项目所必须的最重要的文件，
因为它描述了当前项目（也就是当前模块）的元信息，每一行都以一个动词开头，目前有以下 5 个动词:
	module：用于定义当前项目的模块路径。
	go：用于设置预期的 Go 版本。
	require：用于设置一个特定的模块版本。
	exclude：用于从使用中排除一个特定的模块版本。
	replace：用于将一个模块版本替换为另外一个模块版本。
	你可能还会疑惑 indirect 是什么东西，indirect 的意思是传递依赖，也就是非直接依赖。
*/

package main

//包名称一般都是小写

//(1)文件名尽量采取有意义的文件名，简短，应为小写单词，使用下划线分割 demo_test_q.go

import "fmt"

/*(2)标识符的组成：
1、标识符只能以数字、字母、下划线(_)组成
2、只能以字母和下划线(_)开头
3、标识符区分大小写*/

func main() {
	var name string
	var age int
	var _sys int
	fmt.Println(name, age, _sys)
}

// (3)结构体：驼峰命名法，首字母大写即为共有plubic，首字母小写即为私有
type CoutOrder struct {
	Name string
}

// (4)接口命名,驼峰命名法，单个函数的结构名以 'er' 作为后缀，例如：reader、writer
type Reader interface {
	Read(p []byte) (n int, err error)
}

// (5)变量名称，驼峰命名法,首字母大写
var number string
var Num string

// (6)常量,字母全部大写
const PI = 3.14
const (
	HTTP  string = "http"
	HTTPS string = "http"
)

//(7)错误处理
/*错误处理的原则就是不能丢弃任何有返回err的调用，不要使用'_'丢弃，接收到错误要么返回err，或者使用log记录下来今早return，一旦
有错误发生，马上返回，尽量不要使用panic，除非你知道你在做什么，错误描述如果是英文必须小写，不需要标点符号，采用独立的错误流进行处理*/
/*if err != nil {
	//错误处理
	return
}*/

//(8)单元测试文件名example_test.go ,测试用例的函数名称必须以Test开头,比如：TestExample
